﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Odense_Kommune.Interfaces;

namespace Odense_Kommune.Model
{
    /// <summary>
    /// Lavet af Tien, DM121 - 14. dec. 2012
    /// </summary>
    public class VirkningerCollection : IVirkningerCol
    {
        #region Variabler

        List<string> _listeafvirkninger;
        List<IVirkninger> _listeaflangvirkninger;
        List<IVirkninger> _listeafmellemvirkninger;
        List<IVirkninger> _listeafkortvirkninger;

        #endregion

        #region Konstruktør
        /// <summary>
        /// Instantiere Virkninger
        /// </summary>
        public VirkningerCollection()
        {
            ListeafLangVirkninger = new List<IVirkninger>();
            ListeafMellemVirkninger = new List<IVirkninger>();
            ListeafKortVirkninger = new List<IVirkninger>();
            ListeafVirkninger = new List<string>();
            ListeafVirkninger.Add("Forventede langsigtede virkninger");
            ListeafVirkninger.Add("Forventede mellemlange virkninger");
            ListeafVirkninger.Add("Forventede kortsigtede virkninger");
            ListeafLangVirkninger.Add(new Virkninger(0, "Borgere skal deltage aktivt i civilsamfundet", 0));
            ListeafLangVirkninger.Add(new Virkninger(0, "Borgere skal administrere egen økonomi", 0));
            ListeafLangVirkninger.Add(new Virkninger(0, "Borgere skal fastholde egen bolig", 0));
            ListeafLangVirkninger.Add(new Virkninger(0, "Borgere skal være selvforsørgende både job eller uddannelse", 0));
            ListeafLangVirkninger.Add(new Virkninger(0, "Bogere skal tage vare op eget helbred både fysisk og psykisk", 0));
            ListeafLangVirkninger.Add(new Virkninger(0, "Borgere skal have et værdigt liv", 0));
            ListeafLangVirkninger.Add(new Virkninger(0, "Borgere skal respektere samfundets spilleregler", 0));
            ListeafMellemVirkninger.Add(new Virkninger(0, "Borgere forbliver stoffri", 0));
            ListeafMellemVirkninger.Add(new Virkninger(0, "Borger påtager sig ansvar", 0));
            ListeafKortVirkninger.Add(new Virkninger(0, "Borger kan håndtere paktiske opgaver", 0));
            ListeafKortVirkninger.Add(new Virkninger(0, "Borger kan være tilstede i en gruppe", 0));
            ListeafKortVirkninger.Add(new Virkninger(0, "Borger har stabilt fremmøde", 0));
        }

        #endregion

        #region Metoder

        public void OpretVirkning(int forløb, string beskrivelse, int realistisk)
        {
            //foreach (var item in ListeafVirkninger)
            //{
            //    if (item.Beskrivelse == beskrivelse)
            //    {
            //        throw new Exception("En virkning med beskrivelsen: " + beskrivelse + " findes allerede i systemet.");
            //    }
            //    else
            //    {
            //        ListeafVirkninger.Add(new Virkninger(forløb, beskrivelse, realistisk));
            //    }
            //}
        }

        public void SletVirkning(IVirkninger v)
        {
            //ListeafVirkninger.Remove(v);
        }

        public IVirkninger RedigerVirkning(IVirkninger v, int forløb, string beskrivelse, int realistisk)
        {
            v.Forløb = forløb;
            v.Beskrivelse = beskrivelse;
            v.Realistisk = realistisk;
            return v;
        }

        public IVirkninger VisVirkning(IVirkninger v)
        {
            //foreach (var item in ListeafVirkninger)
            //{
            //    if (item == v)
            //    {
            //        return item;
            //    }
            //}
            return null;
        }

        #endregion

        #region Egenskaber

        public List<IVirkninger> ListeafLangVirkninger
        {
            get { return _listeaflangvirkninger; }
            set { _listeaflangvirkninger = value; }
        }

        public List<IVirkninger> ListeafMellemVirkninger
        {
            get { return _listeafmellemvirkninger; }
            set { _listeafmellemvirkninger = value; }
        }

        public List<IVirkninger> ListeafKortVirkninger
        {
            get { return _listeafkortvirkninger; }
            set { _listeafkortvirkninger = value; }
        }

        public List<string> ListeafVirkninger
        {
            get { return _listeafvirkninger; }
            set { _listeafvirkninger = value; }
        }

        #endregion
    }
}